package com.gugee.ins.data.common.constant;

/**
 * 事件状态枚举定义
 */
public enum EventStatusEnum {
    /**
     *
     */
    NORMAL("NORMAL","成功"),
    SUCCESS("SUCCESS","成功"),
    EXCEPTION("EXCEPTION","异常"),
    /**
     * rest接口返回的BODY为NULL
     */
    SPIDER_BODY_NULL("SPIDER_BODY_NULL","rest接口返回的BODY为NULL"),
    /**
     * rest接口返回的BODY内容转换为空对象，不含对象属性
     */
    SPIDER_CHANGE_JSON_NULL("SPIDER_CHANGE_JSON_NULL","rest接口返回的BODY内容转换为空对象"),
    /**
     * rest接口返回的BODY内容转换为对象后，获取对象指定属性，对象无此属性导致空指针
     */
    SPIDER_PROPERTIES_DEFECT("SPIDER_PROPERTIES_DEFECT","获取对象指定属性为空"),
    /**
     * 爬虫侧无法获取cookie,cookie使用被限制!
     */
    SPIDER_COOKIE_LIMIT("SPIDER_COOKIE_LIMIT","无法获取cookie,cookie使用被限制!"),

    SPIDER_404("SPIDER_404","ins服务器返回404"),
    /**
     * INS接口返回数据不全
     */
    SPIDER_DATA_DEFECT("SPIDER_DATA_DEFECT","INS接口返回数据不全"),
    /**
     * rest接口返回的BODY为NULL
     */
    AI_BODY_NULL("AI_BODY_NULL","ai分析rest接口返回的BODY为NULL"),
    /**
     * ai分析rest接口传入参数错误
     */
    AI_PARAM_ERROR("AI_PARAM_ERROR","ai分析rest接口传入参数错误"),
    /**
     * ai分析rest接口内部代码bug
     */
    AI_IMPL_ERROR("AI_IMPL_ERROR","ai分析rest接口内部代码bug"),
    /**
     * ai分析rest接口qps上限
     */
    AI_QPS_FULL("AI_QPS_FULL","ai分析rest接口qps上限"),
    /**
     * ai分析rest接口图片下载问题
     */
    AI_PIC_DOWNLOAD_ERROR("AI_PIC_DOWNLOAD_ERROR","ai分析rest接口图片下载问题"),
    /**
     * ai分析rest接口图片无人脸
     */
    AI_PIC_NO_FACE("AI_PIC_NO_FACE","ai分析rest接口图片无人脸"),
    /**
     * rest接口返回的BODY内容转换为对象后，获取对象指定属性，对象无此属性导致空指针
     */
    AI_PROPERTIES_DEFECT("AI_PROPERTIES_DEFECT","获取对象指定属性为空"),
    /**
     * ai 分析商品分类 无结果
     */
    AI_PRODUCT_CATE_UNKNOWN("AI_PRODUCT_CATE_UNKNOWN","ai分析商品分类无结果"),
    /**
     * kafka消息滞留
     */
    KAFKA_LAG("KAFKA_LAG","kafka消息滞留"),
    UNKNOWN("UNKNOWN","未知");

    /**
     * 返回码
     */
    String code;
    /**
     * 解释
     */
    String desc;

    EventStatusEnum(String code, String desc){
        this.code = code;
        this.desc = desc;
    }

    /**
     * 获取编码
     * @return
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取描述
     * @return
     */
    public String getDesc() {
        return desc;
    }

    /**
     * 根据code返回描述
     * @return
     */
    public static EventStatusEnum getEnumByCode(String code) {
        for(EventStatusEnum e : EventStatusEnum.values()){
            if(e.getCode().equals(code) ){
                return e;
            }
        }
        return UNKNOWN;
    }
}
